//
// File:	IGameRuleManager.hpp
// Author:	Thomas TISSOT-DUPONT
// Login:	<thomas.tissotdupont@free.fr>
//
// Created:	23/04/2010 at 22:49:50
// Purpose:	
//
#ifndef IGAMERULEMANAGER_HPP
#define IGAMERULEMANAGER_HPP

#include "IGameRule.hpp"

class IGameRuleManager
{
public:
	virtual					~IGameRuleManager() {}

public:
	typedef IGameRule		*(*pfnGameRuleFactory)();
	virtual void			InstallGameRule(const std::string &, pfnGameRuleFactory) = 0;

public:
	virtual bool			HasGameRule(const std::string &) const = 0;
	virtual bool			StartGameRule(const std::string &) = 0;
	virtual void			StopGameRule() = 0;
	virtual IGameRule		*GetCurrentGameRule() const = 0;

public:
	virtual void			Update() = 0;
};

#endif //!IGAMERULEMANAGER_HPP
